-- $LastChangedDate: 2007-06-03 12:04:05 +0200 (Sun, 03 Jun 2007) $
-- $LastChangedRevision: 159 $
-- $LastChangedBy: david $

-- package que contiene la definicion del tipo log

-- packages del gimnasio

PACKAGE Tiposprotegidos.Log IS

   -- tipo que contiene identificadores de los contadores
   -- que contiene el log
   TYPE Rango_Contadorlog IS
         (Cliente_Cantidad,
          Cliente_Entrevistado,
          Cliente_Emergencia,
          Cliente_Vete_A_Casa,
          Cliente_Entreno_Completo,
          Cliente_Muerto,
          Ejercicios_Asignados,
          Monitor_Cantidad,
          Monitor_Interrumpido,
          Monitor_Libre,
          Aparato_Cantidad,
          Aparato_Libre,
          Medico_Cantidad,
          Medico_Libre);

   TYPE Array_Contadorlog IS ARRAY (Rango_Contadorlog) OF Natural;

   PROTECTED TYPE Log IS

      -- update procedures
      -- actualiza el contador que se le indica por parametro
      PROCEDURE Add (
            C : IN     Rango_Contadorlog);
      PROCEDURE Dec (
            C : IN     Rango_Contadorlog);

      -- read functions
      -- lee el contador que se le indica por parametro
      FUNCTION Read (
            C : IN     Rango_Contadorlog)
        RETURN Natural;

   PRIVATE
      -- array de contadores del log
      Contador: Array_Contadorlog := (OTHERS => 0);
   END Log;

   -- funciones de manejo del log, incrementa o decrementa
   -- el contador especificado en una unidad
   PROCEDURE Log_Add (
         C : IN     Rango_Contadorlog);
   PROCEDURE Log_Dec (
         C : IN     Rango_Contadorlog);

   FUNCTION Log_Read (
         C : IN     Rango_Contadorlog)
     RETURN Natural;


   FUNCTION "&" (
         Left  : String;
         Right : Rango_Contadorlog)
     RETURN String;

END Tiposprotegidos.Log;
